﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace SapaFinance.DTO
{
    public class RequestDTO : ChangableDTO
    {
        private DateTime _paymentPeriod;
        [DataType(DataType.DateTime)]
        [Required(ErrorMessage = "*")]
        [DisplayName("Дата оплаты")]
        public DateTime PaymentPeriod
        {
            get { return _paymentPeriod > DateTime.MinValue ? _paymentPeriod : DateTime.Today; }
            set { _paymentPeriod = value; }
        }

        [DisplayName("Заявка")]
        public string Number { get; set; }

        [DisplayName("Плательщик")]
        public string Payer { get; set; }

        [Required(ErrorMessage = "Не определен плательщик")]
        [ScaffoldColumn(false)]
        [DisplayName("Плательщик")]
        public Guid SelectedPayer { get; set; }

        [DisplayName("Получатель")]
        public string Payee { get; set; }

        [ScaffoldColumn(false)]
        [DisplayName("Получатель")]
        [Required(ErrorMessage = "Не выбран получатель")]
        public Guid? SelectedPayee { get; set; }

        [DisplayName("Оплатить")]
        [UIHint("Payment")]
        [Required(ErrorMessage = "*")]
        public decimal? Payment { get; set; }

        [DisplayName("Тип оплаты")]
        public string PaymentTypeName { get; set; }

        [Required(ErrorMessage = "Не определена форма оплаты")]
        [ScaffoldColumn(false)]
        [DisplayName("Форма оплаты")]
        public Guid SelectedPaymentType { get; set; }

        [DisplayName("Утверждена")]
        public bool IsAccepted { get; set; }

        [DisplayName("ЦФО")]
        public string CfoName { get; set; }

        [Required(ErrorMessage = "Не определен ЦФО")]
        [ScaffoldColumn(false)]
        [DisplayName("ЦФО")]
        public Guid SelectedCfo { get; set; }

        [DisplayName("НДС,%")]
        [UIHint("TaxRate")]
        public int TaxRate { get; set; }

        [Required(ErrorMessage = "*")]
        [DisplayName("Назначение платежа")]
        [DataType(DataType.MultilineText)]
        public string PaymentPurpose { get; set; }

        [DisplayName("Спец.примечание")]
        [DataType(DataType.MultilineText)]
        public string Description { get; set; }

        [Required(ErrorMessage = "Не определена статья бюджета")]
        [ScaffoldColumn(false)]
        [DisplayName("Статья бюджета")]
        public Guid SelectedBudgetItem { get; set; }

        [DisplayName("Счет получателя")]
        [ScaffoldColumn(false)]
        [Required(ErrorMessage = "Не определен банк. счет получателя")]
        public Guid? SelectedAccount { get; set; }

        public IEnumerable<SelectListItem> AccountList { get; set; }
        public CurrencyDetailDTO CurrencyDetail { get; set; }

        [DisplayName("Пл.опл%")]
        public int PaidPercentByOrder { get; set; }
    }
}